﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using Office = Microsoft.Office.Core;

// SVN Info
// LastChangedRevision  $LastChangedRevision: 71 $
// LastChangedDate      $LastChangedDate: 2009-11-09 23:40:56 +0100 (Mon, 09 Nov 2009) $
// HeadURL              $HeadURL: svn://bpcsrv/ebInterface/eRechnung%203.0/tags/Vers 0 Rev 1 Mod 0-Beta/eRechnung 3.0/eRechung_Ribbon.cs $
// Revision             $Revision: 71 $
// Author               $Author: jbogad $
// Date                 $Date: 2009-11-09 23:40:56 +0100 (Mon, 09 Nov 2009) $
// LastChangedBy        $LastChangedBy: jbogad $
// ID                   $Id: eRechung_Ribbon.cs 71 2009-11-09 22:40:56Z jbogad $
// Header               $Header: svn://bpcsrv/ebInterface/eRechnung%203.0/trunk/eRechnung%203.0/eRechnung%203.0/ThisDocument.cs 60 2009-11-06 10:17:03Z jbogad $


// TODO: Führen Sie diese Schritte aus, um das (XML-)Element auf der Multifunktionsleiste zu aktivieren:

// 1: Kopieren Sie folgenden Codeblock in die Klasse "ThisAddin", "ThisWorkbook" oder "ThisDocument".

//  protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
//  {
//      return new Ribbon1();
//  }

// 2. Erstellen Sie Rückrufmethoden im Abschnitt "Multifunktionsleisten-Rückrufe" dieser Klasse, um Benutzeraktionen
//    zu behandeln, z.B. das Klicken auf eine Schaltfläche. Hinweis: Wenn Sie diese Multifunktionsleiste aus dem Multifunktionsleisten-Designer exportiert haben,
//    verschieben Sie den Code aus den Ereignishandlern in die Rückrufmethoden, und ändern Sie den Code für die Verwendung mit dem
//    Programmmodell für die Multifunktionsleisten-Erweiterung (RibbonX).

// 3. Weisen Sie den Steuerelementtags in der Multifunktionsleisten-XML-Datei Attribute zu, um die entsprechenden Rückrufmethoden im Code anzugeben.  

// Weitere Informationen erhalten Sie in der Multifunktionsleisten-XML-Dokumentation in der Hilfe zu Visual Studio-Tools für Office.


namespace eRechnung_3_0
{
    [ComVisible(true)]
    public class eRechung_Ribbon : Office.IRibbonExtensibility
    {
        private Office.IRibbonUI ribbon;

        public eRechung_Ribbon()
        {
        }

        #region IRibbonExtensibility-Member

        public string GetCustomUI(string ribbonID)
        {
            return GetResourceText("eRechnung_3_0.eRechnung_Ribbon.xml");
        }


        public stdole.IPictureDisp GetResourceImage(string imageName)
        {
            stdole.IPictureDisp pictureDisp = null;

            switch(imageName)
            {               
                case "help":
                {
                    pictureDisp = imageConverter.ImageToPictureDisp(Images.imgHelp);
                    break;
                }
                case "save":
                {
                    pictureDisp = imageConverter.ImageToPictureDisp(Images.imgSave);
                    break;
                }
                case "edit":
                {
                    pictureDisp = imageConverter.ImageToPictureDisp(Images.imgEdit);
                    break;
                }
                case "settings":
                {
                    pictureDisp = imageConverter.ImageToPictureDisp(Images.imgSettings);
                    break;
                }
                case "skonto":
                {
                    pictureDisp = imageConverter.ImageToPictureDisp(Images.imgSkonto);
                    break;
                }
                    
                default:
                {
                    pictureDisp = null;
                    break;
                }
            }

            return pictureDisp;
        }

        #endregion

        #region Multifunktionsleisten-Rückrufe
        //Erstellen Sie hier Rückrufmethoden. Weitere Informationen über das Hinzufügen von Rückrufmethoden erhalten Sie, indem Sie das Multifunktionsleisten-XML-Element im Projektmappen-Explorer markieren und dann F1 drücken.

        public void Ribbon_Load(Office.IRibbonUI ribbonUI)
        {
            this.ribbon = ribbonUI;
        }

        public void RbnBtn_EditDetails_Click(Office.IRibbonControl control)
        {
            Form Details = new FrmDetails();
            Details.Show();
        }

        public void RbnBtn_EditSkonto_Click(Office.IRibbonControl control)
        {
            Form myForm = new FrmSkonto();
            myForm.Show();
        }

        public void RbnBtn_Settings_Click(Office.IRibbonControl control)
        {
            FrmEbInterfaceSettings ebIsetting = new FrmEbInterfaceSettings();
            ebIsetting.Show();
        }

        public void RbnBtn_SaveXML_Click(Office.IRibbonControl control)
        {
            eRechnung_3_0.Globals.ThisDocument.SaveXML(false);
        }

        public void RbnBtn_SaveTemplate_Click(Office.IRibbonControl control)
        {
            eRechnung_3_0.Globals.ThisDocument.SaveXML(true);
        }

        public void RbnBtn_LoadTemplate_Click(Office.IRibbonControl control)
        {
            eRechnung_3_0.Globals.ThisDocument.LoadTemplateXML();
        }

        public void RbnBtn_Austriapro_Click(Office.IRibbonControl control)
        {
            System.Diagnostics.Process.Start("http://www.austriapro.at");
        }

        public void RbnBtn_About_Click(Office.IRibbonControl control)
        {
            Form AboutForm = new AboutForm();
            DialogResult dr = AboutForm.ShowDialog();

        }
        public void RbnBtn_ebInterface_Click(Office.IRibbonControl control)
        {
            System.Diagnostics.Process.Start("http://www.ebinterface.at");

        }
        public void RbnBtn_Signatur_Click(Office.IRibbonControl control)
        {
            MessageBox.Show("Link zu Signaturseite ....");

        }

        public void RbnBtn_Help_Click(Office.IRibbonControl control)
        {
            MessageBox.Show("Help");

        }

        #endregion

        #region Helfer

        private static string GetResourceText(string resourceName)
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            string[] resourceNames = asm.GetManifestResourceNames();
            for (int i = 0; i < resourceNames.Length; ++i)
            {
                if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0)
                {
                    using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i])))
                    {
                        if (resourceReader != null)
                        {
                            return resourceReader.ReadToEnd();
                        }
                    }
                }
            }
            return null;
        }

        #endregion
    }
}
